package com.tchhy.provider.api.healthyapi

import com.tchhy.basemodule.basedata.PeopleInfoEntity
import com.tchhy.provider.URLConstant
import com.tchhy.provider.connect.response.CallLineUpOverRes
import com.tchhy.provider.data.common.BaseResp
import com.tchhy.provider.data.common.EmptyResp
import com.tchhy.provider.data.healthy.FamilyItem
import com.tchhy.provider.data.healthy.data.MonthPeriod
import com.tchhy.provider.data.healthy.request.*
import com.tchhy.provider.data.healthy.response.*
import com.tchhy.provider.data.partner.response.DataListRes
import com.tchhy.provider.data.profit.response.UserIdenAuthenInfo
import io.reactivex.Observable
import okhttp3.RequestBody
import retrofit2.http.*

/**
 * @author: admin
 * @date: 2019/8/20
 * @des: 健康
 *
 **/
interface TianChenHealthyApi {


    /**
     * @description 添加举报内容
     * @param
     * @return
     */
    @POST(URLConstant.ADD_COMPLAINT_CONTENT)
    fun addComplaintContent(@Body body: RequestBody): Observable<BaseResp<Boolean>>

    /**
     * @description 内容是否可以分享
     * @param
     * @return
     */
    @GET(URLConstant.GET_IS_CAN_SHARE)
    fun getIsCanShare(@Query("contentId") contentId: String?): Observable<BaseResp<Boolean>>

    /**
     * @description 获取经期列表
     * @param
     * @return
     */
    @GET(URLConstant.FETCH_MONTH_PEROID)
    fun fetchMonthPeriod(@Query("familyRelationId") familyRelationId: String): Observable<BaseResp<ArrayList<MonthPeriod>>>


    /**
     * @description 保存经期列表
     * @param
     * @return
     */
    @POST(URLConstant.SAVE_MONTH_PEROID)
    fun saveMonthPeriod(@Body body: RequestBody): Observable<EmptyResp>


    /**
     * @description 获取粉丝列表
     * @param
     * @return
     */
    @GET(URLConstant.FETCH_FANS_LIST)
    fun fetchFansList(
        @Query(" authorId") authorId: String,
        @Query(
            "pageNum"
        ) pageNum: Int, @Query(
            "pageSize"
        ) pageSize: Int
    ): Observable<BaseResp<DataListRes<ContentPeopleHeadSummary>>>


    /**
     * @description 取消关注
     * @param
     * @return
     */
    @DELETE(URLConstant.CANCEL_FOCUS)
    fun cancelFocus(
        @Query("authorId") authorId: String,
        @Query(
            "followAuthorId"
        ) followAuthorId: String
    ): Observable<EmptyResp>

    /**
     * @description 获取关注用户列表
     * @param
     * @return
     */
    @GET(URLConstant.FETCH_FOLLOW_LIST)
    fun fetchFollowList(
        @Query(" authorId") authorId: String,
        @Query(
            "pageNum"
        ) pageNum: Int, @Query(
            "pageSize"
        ) pageSize: Int
    ): Observable<BaseResp<DataListRes<ContentPeopleHeadSummary>>>

    /**
     * @description 获取个人主页的内容列表
     * @param
     * @return
     */
    @GET(URLConstant.FETCH_CONTENT_LIST)
    fun fetchPeopleContentList(
        @Query("authorId") authorId: String, @Query("type") type: Int, @Query(
            "pageNum"
        ) pageNum: Int, @Query(
            "pageSize"
        ) pageSize: Int
    ): Observable<BaseResp<DataListRes<PersonContentSummary>>>


    /**
     * @description 获取个人主页的内容列表
     * @param
     * @return
     */
    @POST(URLConstant.FOLLOW_USER)
    fun followPeople(
        @Body body: RequestBody
    ): Observable<EmptyResp>


    /**
     * @description 登录
     */
    @POST(URLConstant.LOGIN)
    fun onLogin(@Body body: RequestBody): Observable<BaseResp<PeopleInfoEntity>>

    /**
     * @description 呼叫药箱
     */
    /*@POST(URLConstant.CALL_MEDICINE)
    fun callMedicienChest(@Body body: RequestBody): Observable<EmptyResp>*/

    /**
     * @description 关闭聊天
     */
    /* @POST(URLConstant.CLOSE_CHAT)
     fun closeChat(@Body body: RequestBody): Observable<EmptyResp>*/

    /**
     * @description 校验验证码
     */
    @POST(URLConstant.CHECK_SMS)
    fun checkCaptcha(@Body body: RequestBody): Observable<BaseResp<CheckCaptchaRes>>

    /**
     * @description 发送验证码
     */
    @POST(URLConstant.SEND_SMS)
    fun sendCaptcha(@Body body: RequestBody): Observable<EmptyResp>

    /**
     * @description 申请列表
     */
    @POST(URLConstant.FORGET_PASSWORD)
    fun forgetPassword(@Body body: RequestBody): Observable<EmptyResp>

    /**
     * @description 微信绑定
     */
    @POST(URLConstant.BINDING_PHONE)
    fun bindphone(@Body body: RequestBody): Observable<BaseResp<PeopleInfoEntity>>


    /**
     * @description 申请列表
     */
    @GET(URLConstant.FETCH_FAMILY_LIST)
    fun fetchFamilyList(@Query("id") id: String): Observable<BaseResp<ArrayList<FamilyItem>>>

    /**
     * @description 获取兴趣标签
     */
    @GET(URLConstant.GET_TAG)
    fun fetchTag(): Observable<BaseResp<ArrayList<InterestEntry>>>

    /**
     * @description 获取im个人主页
     */
    @GET(URLConstant.PERSON_MAIN_PAGE)
    fun getImInfo(
        @Query("imUserId") imUserId: String, @Query("familyId") familyID: String
    ): Observable<BaseResp<FriendInfoNewRes>>


    /**
     * @description 新增家庭成员
     */
    @POST(URLConstant.ADD_FAMILY_MEMBER)
    fun joinFamily(@Body body: RequestBody): Observable<BaseResp<ActiveChestRes>>

    /**
     * @description 短信提醒创建账号
     */
    @GET(URLConstant.ADD_USER_BY_SMS)
    fun addUserBySms(
        @Query("id") id: String,
        @Query("phone") phone: String,
        @Query("code") code: String
    ): Observable<EmptyResp>

    /**
     * @description 获取家庭个人详情
     */
    @GET(URLConstant.FETCH_FAMILY_MEMBER)
    fun fetchFamilyUserInfo(@Query("id") id: String): Observable<BaseResp<PersonDetailInfoRes>>


    /**
     * @description 退出家庭
     * @param
     * @return
     */
    @DELETE(URLConstant.DELETE_QUIT_FAMILY)
    fun quitFamily(
        @Query("familyId") familyId: String

    ): Observable<BaseResp<String>>

    /**
     * @description 关注内容
     */
    @GET(URLConstant.FOLLOW_LIST_CONTENT)
    fun fetchFocusContents(
        @Query("type") type: Int,
        @Query("familyRelationId") familyRelationId: String?,
        @Query("authorId") authorId: String?,
        @Query("healthIndex") healthIndex: ArrayList<String>?,
        @Query(
            "pageNum"
        ) pageNum: Int,
        @Query(
            "pageSize"
        ) pageSize: Int
    ): Observable<BaseResp<DataListRes<ContentBaseEntity>>>

    /**
     *判断当前用户是否填写兴趣标签
     */
    @GET(URLConstant.CURRENT_IS_JOINED_TAG)
    fun checkUserAddTagResult(): Observable<BaseResp<Boolean>>

    /**
     * 判断当前用户是否关注过其他用户
     */
    @GET(URLConstant.alreadyFollowPeople)
    fun isFollowPeople(): Observable<BaseResp<Boolean>>

    /**
     * 判断当前用户是否关注过其他用户
     */
    @GET(URLConstant.IS_FOLLOW_OTHER)
    fun isFollowSomeone(@Query("other") other: Long?): Observable<BaseResp<FollowedRes>>

    /**
     * @description新增标签
     * */
    @POST(URLConstant.ADD_TAG)
    fun addTag(@Body body: RequestBody): Observable<BaseResp<Boolean>>

    /**
     * 给用户推荐内容
     */
    @GET(URLConstant.RECOMMEND_CONTENTS)
    fun recommendContent(
        @Query("familyId") familyId: String,
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<DataListRes<ContentBaseEntity>>>

    /**
     * 根据标签火圈内容
     */
    @GET(URLConstant.FETCH_CONTENT_BY_TAG)
    fun fetchContentsByTag(
        @Query("tag") tag: String,
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<DataListRes<ContentBaseEntity>>>

    /**
     * 给用户推荐内容
     */
    @GET(URLConstant.DELETE_PUBLISH_CONTENT)
    fun deletePublishContent(
        @Query("contentId") contentId: String
    ): Observable<EmptyResp>

    /**
     * 同城推荐
     */
    @GET(URLConstant.LOCAL_CITY_CONTENT)
    fun fetchLocalCityContent(
        @Query("type") type: Int,
        @Query("areaId") areaId: String,
        @Query("lat") lat: String,
        @Query("lng") lng: String,
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<DataListRes<ContentBaseEntity>>>

    /**
     * 收藏的内容
     */
    @GET(URLConstant.COLLECT_CONTENT)
    fun fetchCollectContents(
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<DataListRes<ContentBaseEntity>>>

    /**
     * LAST_WATCH_CONTENTS
     */
    @GET(URLConstant.COLLECT_CONTENT)
    fun lastContents(): Observable<BaseResp<DataListRes<ContentBaseEntity>>>

    /**
     * 收藏的内容
     */
    @GET(URLConstant.FETCH_HEALTH_INDEX)
    fun fetchHealthIndex(@Query("id") familyRelationId: String): Observable<BaseResp<ArrayList<String>>>

    /**
     * 获取最后一条发布内容
     */
    @GET(URLConstant.GET_LAST_CONTENT)
    fun getLastContent(): Observable<BaseResp<ContentBaseEntity>>

    /**
     * @description 编辑个人详情 */
    @PUT(URLConstant.UPDATE_PROFILE_DETIAL)
    fun updateProfileDetail(@Body body: RequestBody): Observable<EmptyResp>


    /**
     * @description 根据用户主键获取关注数量 */
    @GET(URLConstant.FETCH_USE_FOCUS_FANS_NUM)
    fun fetchAllFansFocusNum(): Observable<BaseResp<UserFansOrFacusNumEntity>>

    /**
     * @description 根据用户主键获取关注数量 */
    @POST(URLConstant.ADD_USE_COMPLAINT)
    fun complaintUseFeedback(@Body body: RequestBody): Observable<EmptyResp>

    /**
     * @description 修改家庭名称

     */
    @GET(URLConstant.CHANGE_FAMILY_NAME)
    fun setFamilyName(
        @Query("editId") editId: Long,
        @Query("familyId") familyId: String,
        @Query("familyName") familyName: String
    ): Observable<EmptyResp>

    /**
     * @description 激活药箱

     */
    @POST(URLConstant.ACTIVE_CHEST)
    fun activityMedicineBox(@Body body: RequestBody): Observable<BaseResp<ActiveMedicineRes>>

    /**
     * @description 获取药箱连接状态
     * @param
     * @return
     * @author admin
     * @time 2019/10/16
     */
    @GET(URLConstant.GET_MEDICINE_KIT_STATUS)
    fun getMedicineConnectionStatus(@Query("familyId") familyId: String): Observable<BaseResp<KitConnectionStatusRes>>

    /**
     * @description 设置默认家庭
     */
    @GET(URLConstant.SET_FAULT_FAMILY)
    fun setDefaultFamily(
        @Query("editId") editId: Long, @Query("familyId") familyId: String, @Query(
            "id"
        ) id: Long
    ): Observable<BaseResp<Long>>

    /**
     * @description 解除药箱关系
     */
    @DELETE(URLConstant.DELETE_MEMBER_OF_CHEST)
    fun deleteMemberOfChest(@Query("id") id: String): Observable<EmptyResp>

    /**
     * @description 获取药箱详情
     */
    @GET(URLConstant.FETCH_MEDICINE_BOX_INFO)
    fun fetchMedicineBox(
        @Query("editId") editId: Long,
        @Query("medicineCode") id: String
    ): Observable<BaseResp<MedicineBoxInfo>>

    /**
     * @description 获取家庭成员列表
     */
    @GET(URLConstant.FETCH_ALL_FAMILY_MEMBER)
    fun fetchAllFamilyMember(
        @Query("editId") editId: Long, @Query("familyId") familyId: String, @Query(
            "id"
        ) id: Long
    ): Observable<BaseResp<ArrayList<FamilyMemberShipItem>>>

    /**
     * @description 获取家庭成员列表, 发生异常的时候不会自动切换家庭
     */
    @GET(URLConstant.FETCH_ALL_FAMILY_MEMBER2)
    fun fetchAllFamilyMember2(
        @Query("editId") editId: Long, @Query("familyId") familyId: String, @Query(
            "id"
        ) id: Long
    ): Observable<BaseResp<ArrayList<FamilyMemberShipItem>>>

    /**
     * @description 通知药箱二维码扫描成功
     */
    @GET(URLConstant.QRCODE_SCANING_NOTIFY)
    fun notifyMedicineBox(
        @Query("timeCode") timeCode: String, @Query("editId") editId: Long, @Query(
            "medicineCode"
        ) medicineCode: String
    ): Observable<EmptyResp>

    /**
     * @description 通过扫描添加家庭成员
     */
    @POST(URLConstant.ADD_MEMBER_BY_SCAN)
    fun addFamilyMemberByScan(@Body body: RequestBody): Observable<BaseResp<ActiveChestRes>>


    /**
     * @description 绑定药箱
     */
    @GET(URLConstant.BINDING_MEDCINE)
    fun bindingMedicine(
        @Query("timeCode") timeCode: String,
        @Query("editId") editId: Long,
        @Query("medicineCode") medicineCode: String,
        @Query(
            "type"
        ) type: Int
    ): Observable<EmptyResp>


    /**
     * @description 修改备注名

     */
    @PUT(URLConstant.UPDATE_REMARK_NAME)
    fun updateRemarkName(@Body body: RequestBody): Observable<EmptyResp>

    /**
     * @description 体重最近7次记录

     */
    @GET(URLConstant.WEIGHT_LIST)
    fun fetchWeightRecordList(
        @Query("editId") editId: Long,
        @Query("familyRelationId") familyRelationId: String
    ): Observable<BaseResp<ArrayList<WeightItemRes>>>


    /**
     * @description 保存身高体重

     */
    @POST(URLConstant.SAVE_WEIGHT)
    fun saveWeightRecord(@Body body: RequestBody): Observable<EmptyResp>


    /**
     * @description 步数最近7次记录

     */
    @GET(URLConstant.STEP_LIST)
    fun fetchStepRecordList(
        @Query("editId") editId: Long,
        @Query("familyRelationId") familyRelationId: Long
    ): Observable<BaseResp<ArrayList<StepRecordRes>>>


    /**
     * @description 保存步数

     */
    @POST(URLConstant.SAVE_STEP)
    fun saveStepRecord(@Body body: RequestBody): Observable<EmptyResp>


    /**
     * @description 获取用户家庭排行

     */
    @GET(URLConstant.LIST_RANK_OF_STEP)
    fun fetchRankByStep(
        @Query("editId") editId: Long,
        @Query("familyRelationId") familyRelationId: Long
    ): Observable<BaseResp<ArrayList<FamilyMemberRankItem>>>


    /**
     * @description 获取血压最近记录

     */
    @GET(URLConstant.BLOOD_PRESSURE_LIST)
    fun fetchBloodPressureRecordList(
        @Query("editId") editId: Long,
        @Query("familyRelationId") familyRelationId: Long
    ): Observable<BaseResp<ArrayList<BloodPressureItemRes>>>

    /**
     * @description 保存血压

     */
    @POST(URLConstant.BLOOD_PRESSURE_SAVE)
    fun saveBloodPressureRecord(@Body body: RequestBody): Observable<EmptyResp>

    /**
     * @description 获取血糖最近记录

     */
    @GET(URLConstant.BLOOD_SUGAR_LIST)
    fun fetchBloodSugarRecordList(
        @Query("editId") editId: Long,
        @Query("familyRelationId") familyRelationId: Long
    ): Observable<BaseResp<ArrayList<BloodSugarItem>>>

    /**
     * @description 保存血糖

     */
    @POST(URLConstant.BLOOD_SUGAR_SAVE)
    fun saveBloodSugarRecord(@Body body: RequestBody): Observable<EmptyResp>

    /**
     * @description app用户健康档案

     */
    @GET(URLConstant.USER_HEALTH_DATA)
    fun fetchUserHealthData(@Query("familyRelationId") familyRelationId: String): Observable<BaseResp<HealthFileDataRes>>

    /**
     * 获取健康指数详情
     */
    @GET(URLConstant.HEALTH_SCORE_DETAIL)
    fun getHealthScoreDetail(@Query("familyRelationId") familyRelationId: Long): Observable<BaseResp<HealthScoreDetailRes>>

    /**
     * @descriptionapp app首页用户画像

     */
    @GET(URLConstant.MAIN_USER_PORTRAIT)
    fun fetchMainPageUserPortrait(@Query("familyRelationId") familyRelationId: String): Observable<BaseResp<ArrayList<MainPageUserInfo>>>


    /**
     * @description 健康记录分页

     */
    @GET(URLConstant.HEALTH_RECORD_LIST)
    fun fetchHealthRecordList(
        @Query("editId") editId: Long,
        @Query("familyRelationId") familyRelationId: String,
        @Query("pageNum") pageNum: Int,
        @Query(
            "pageSize"
        ) pageSize: Int
    ): Observable<BaseResp<DataListRes<HealthRecordItem>>>


    /**
     * @description 手动增加健康记录

     */
    @POST(URLConstant.ADD_HEALTH_RECORD)
    fun addHealthRecord(@Body body: RequestBody): Observable<EmptyResp>

    /**
     * @description 问卷问题列表
     * @param
     * @return
     * @author admin
     * @time 2019/9/9
     */
    @GET(URLConstant.QUESTION_LIST)
    fun fetchQuestionList(
        @Query("editId") editId: Long,
        @Query("familyRelationId") familyRelationId: Long
    ): Observable<BaseResp<ArrayList<QuestionItem>>>

    /**
     * @description 一键补药
     */
    @POST(URLConstant.ONE_KEY_SUPPLEMENT)
    fun oneKeySupplement(@Body requestBody: RequestBody): Observable<EmptyResp>

    /**
     * @description 获取是否能进行补药
     */
    @GET(URLConstant.GET_ISTONIC)
    fun getIsTonic(@Query("kitNo") kitNo: String): Observable<BaseResp<Boolean>>

    /**
     * @description 获取分类
     * @param
     * @return
     * @author admin
     * @time 2019/9/9
     */
    @GET(URLConstant.GET_CATEGORY)
    fun fetchCategoryList(
        @Query("editId") editId: String,
        @Query("coding") coding: String,
        @Query("type") type: String?
    ): Observable<BaseResp<ArrayList<MedicineCategoryItem>>>


    /**
     * @description 根据69码获取药品信息
     * @param
     * @return
     * @author admin
     * @time 2019/9/9
     */
    @GET(URLConstant.GET_MEDICINE_DERCRIPTION)
    fun fetchMedicineInfoByScan(
        @Query("editId") editId: String,
        @Query("barCode") barCode: String
    ): Observable<BaseResp<MedicineInfo>>


    /**
     * @description 根据药品名称获取药品信息
     * @param
     * @return
     * @author admin
     * @time 2019/9/9
     */
    @GET(URLConstant.GET_MEDICIEN_DETAIL_BY_NAME)
    fun fetchMedicineInfoByName(
        @Query("editId") editId: String,
        @Query("drugsName") drugsName: String,
        @Query("pageNum") pageNum: Int,
        @Query(
            "pageSize"
        ) pageSize: Int
    ): Observable<BaseResp<DataListRes<MedicineInfo>>>


    /**
     * @description 返回全部药品分类
     * @param
     * @return
     * @author admin
     * @time 2019/9/9
     */
    @GET(URLConstant.GET_ALL_MEDICINE_CATEGORY)
    fun fetchAllMedicineCategory(@Query("editId") editId: String): Observable<BaseResp<ArrayList<MedicineTypeRes>>>

    /**
     * @description 全部圈子
     * @param
     * @return
     * @author admin
     * @time 2019/9/9
     */
    @GET(URLConstant.All_CIRCLES)
    fun fetchAllCircles(
        @Query("lat") lat: Double?,
        @Query("lng") lng: Double?,
        @Query("pageNum") pageNum: Int,
        @Query(
            "pageSize"
        ) pageSize: Int
    ): Observable<BaseResp<DataListRes<CircleDisplayItem>>>

    /**
     * @description 获取好友信息
     * @param
     * @return
     * @author admin
     * @time 2019/9/9
     */
    @GET(URLConstant.GET_FRIEND_BASE_INFO)
    fun fetchFriendInfo(@Query("imUserId") imUserId: String): Observable<BaseResp<ArrayList<FriendInfoRes>>>


    /**
     * @description 获取群好友信息
     * @param
     * @return
     * @author admin
     * @time 2019/9/9
     */
    @GET(URLConstant.GET_FRIEND_BASE_INFO)
    fun fetchAllGroupId(@Query("groupIdIm") groupId: String): Observable<BaseResp<ArrayList<FriendInfoRes>>>


    /**
     * @description 获取群好友信息
     * @param
     * @return
     * @author admin
     * @time 2019/9/9
     */
    @POST(URLConstant.COMPLITE_INFO)
    fun completeInfo(@Body body: RequestBody): Observable<BaseResp<PeopleInfoEntity>>
    /**
     *
     */

    /**
     * @description 获取好友信息
     * @param
     * @return
     * @author admin
     * @time 2019/9/9
     */
    @GET(URLConstant.GET_FRIEND_BASE_INFO)
    fun fetchFriendInCircleInfo(
        @Query("imUserId") imUserId: String,
        @Query("groupIdIm") groupId: String
    ): Observable<BaseResp<ArrayList<FriendInfoRes>>>

    /**
     * @description 药品详情
     * @param
     * @return
     * @author admin
     * @time 2019/9/9
     */
    @GET(URLConstant.GET_MEDICIEN_DETAIL)
    fun getMedicineDetail(
        @Query("medicineChestNo") medicineChestNo: String,
        @Query("commodityId") medicineId: String,
        @Query(
            "type"
        ) type: Int
    ): Observable<BaseResp<MedicineInfo>>

    /**
     * @description 药物展示公共接口
     * @param
     * @return
     * @author admin
     * @time 2019/9/9
     */
    @GET(URLConstant.MEDICINE_DISPLAY_LIST)
    fun getMedicineDetail(
        @Query("coding") coding: String, @Query("key") key: String?, @Query(
            "medicineTypeCode"
        ) medicineTypeCode: String?, @Query("type") type: String?
    ): Observable<BaseResp<MedicinesSourceList>>


    /**
     * @description 添加自储药

     */
    @POST(URLConstant.ADD_SELT_STOCK_MEDICINE)
    fun addStockMedicine(@Body body: RequestBody): Observable<EmptyResp>


    /**
     * @description 得到所有以及分页查询药品

     */
    @GET(URLConstant.QUREY_ALL_MEDICINE)
    fun fetchAllMedicines(
        @Query("editId") editId: String,
        @Query("medicineName") medicineName: String?,
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int,
        @Query("typeCode") typeName: String
    ): Observable<BaseResp<DataListRes<MedicineEntity>>>

    /**
     * @description 删除自储药

     */
    @PUT(URLConstant.DELETE_USER_MEDICINE)
    fun deleteUserMedicine(
        @Body body: RequestBody
    ): Observable<EmptyResp>

    /**
     * @description 获得首次配药或者推荐用药的json

     */
    @GET(URLConstant.GET_MEDICINE_LIST)
    fun fetchMedicationList(
        @Query("editId") editId: String,
        @Query("familyId") familyId: String?,
        @Query("meetId") meetId: String?, @Query("type") id: Int
    ): Observable<BaseResp<ArrayList<MedicineDosageEntity>>>

    /**
     * @description 配置首配药单

     */
    @POST(URLConstant.PRESCRIPTION_MEDICINE)
    fun setFirstDosage(
        @Body body: RequestBody
    ): Observable<BaseResp<ArrayList<String>>>

    /**
     * @description 咨询结果

     */
    @GET(URLConstant.FETCH_CONSULTATION_RESULT)
    fun getConsultationResult(
        @Query("ringletterId") ringletterId: String, @Query("familyId") familyId: String
    ): Observable<BaseResp<ConsultationResponse>>

    /**
     * @description 获取家庭成员

     */
    @GET(URLConstant.GET_FAMILY_MEMBER)
    fun getFamilyMember(
        @Query("familyId") familyId: String, @Query("id") id: String
    ): Observable<BaseResp<ArrayList<FamilyMemberData>>>

    /**
     * @description 邀请好友

     */
    @GET(URLConstant.GET_FRIENDS)
    fun inviteFriend(
        @Query("editId") editId: String,
        @Query("chatId") chatId: String,
        @Query("familyId") familyId: String,
        @Query(
            "id"
        ) id: String
    ): Observable<BaseResp<ArrayList<VideoCallFriendItem>>>

    /**
     * @description 获取聊天对象信息

     */
    @GET(URLConstant.GET_IM_USER_INFO)
    fun getImUserInfo(
        @Query("imUserId") imUserId: String
    ): Observable<BaseResp<ChatPersonInfo>>


    /**
     * @description 查询药箱免费咨询次数

     */
    @GET(URLConstant.GET_MEDICINE_CHEST_NUM)
    fun getMedicineChestCallnum(
        @Query("editId") editId: String, @Query("familyId") familyId: String
    ): Observable<BaseResp<Int>>

    /**
     * @description 修改用药单信息

     */
    @POST(URLConstant.CHANGE_USE_MEDICINE_INFO)
    fun changeUseMedicineInfo(@Body requestBody: RequestBody): Observable<BaseResp<ArrayList<VideoCallFriendItem>>>

    /**
     * @description 搜索标签
     * @param
     * @return
     * @author admin
     * @time 2019/10/23
     */
    @GET(URLConstant.GET_CONTENT_TAGS)
    fun searchTag(@Query("keyWorld") keyWord: String?): Observable<BaseResp<SearchTagRes>>

    /**
     * @description 搜索标签
     * @param
     * @return
     * @author admin
     * @time 2019/10/23
     */
    @GET(URLConstant.GET_CONTENT_TAGS_FOR_CONTENT)
    fun searchTagForContent(@Query("keyWorld") keyWord: String?): Observable<BaseResp<SearchTagRes>>

    /**
     * @description 查看我所有发布的内容
     * @param
     * @return
     * @author admin
     * @time 2019/10/23
     */
    @GET(URLConstant.FETCH_MY_CONTENT)
    fun fetchMyContent(
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<DataListRes<ContentBaseEntity>>>

    /**
     * @description 查看我所有发布的内容
     * @param
     * @return
     * @author admin
     * @time 2019/10/23
     */
    @GET(URLConstant.LAST_WATCH_CONTENTS)
    fun fetchlastWatchContent(
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<DataListRes<ContentBaseEntity>>>

    /**
     * @description 新增多媒体内容
     * @param
     * @return
     * @author admin
     * @time 2019/10/23
     */
    @POST(URLConstant.ADD_MUTI_MEDIA)
    fun addMutiMedia(@Body body: RequestBody): Observable<EmptyResp>

    /**
     * @description 用药提醒吃药
     * @param
     * @return
     * @author admin
     * @time 2019/10/23
     */
    @PUT(URLConstant.TAKE_MEDICINE)
    fun takeMedicine(@Body body: RequestBody): Observable<EmptyResp>

    /**
     * @description 内容操作
     * @param
     * @return
     * @author admin
     * @time 2019/10/23
     */
    @POST(URLConstant.CONTENT_OPERATTION)
    fun contentOpeartion(@Body body: RequestBody): Observable<EmptyResp>


    /**
     * @description 用药提醒终止服药
     * @param
     * @return
     * @author admin
     * @time 2019/10/23
     */
    @PUT(URLConstant.END_TAKE_MEDICINE)
    fun endTakeMedicine(@Body body: RequestBody): Observable<EmptyResp>

    /**
     * @description 用药提醒获取计划详情
     * @param
     * @return
     * @author admin
     * @time 2019/10/23
     */
    @GET(URLConstant.GET_PLAN_DETAIL)
    fun getPlanDetails(
        @Query("appMedicationTime") appMedicationTime: String,
        @Query("medicationPlanId") medicationPlanId: String
    ): Observable<BaseResp<ArrayList<TakeMedicineRes>>>

    /**
     * 用药提醒判断提醒是否可以延后
     */
    @POST(URLConstant.JUDGE_NEXT_NOTICE_TIME)
    fun judgeNextNoticeTime(@Body body: RequestBody): Observable<EmptyResp>

    /**
     * @description 计算用药天数
     * @param
     * @return
     * @author admin
     * @time 2019/10/16
     */
    @POST(URLConstant.CALCULATE_MEDICATION_DAYS)
    fun calculateMedicineDays(@Body requestBody: RequestBody): Observable<BaseResp<ArrayList<DrinkDrugsPlanData>>>


    /**
     * @description 创建用药计划
     * @param
     * @return
     * @author admin
     * @time 2019/10/30
     */
    @POST(URLConstant.CREATE_MEDICATION_PLAN)
    fun createMedicationPlan(@Body requestBody: RequestBody): Observable<BaseResp<String>>

    @GET(URLConstant.GET_KIT_TEMPRATURE_HUMIDITY)
    fun getKitTemperatureHumidity(@Query("medicinalCode") medicinalCode: String): Observable<BaseResp<KitStatusRes>>

    @GET(URLConstant.GET_CLASSIFICATION)
    fun getClassification(
        @Query("coding") coding: String,
        @Query("type") type: String
    ): Observable<BaseResp<ArrayList<DrugClassificationRes>>>

    /**
     * @description 修改IM备注名

     */
    @PUT(URLConstant.CHANGE_FRIEND_REMARK_NAME)
    fun updateFriendRemarkName(
        @Body body: RequestBody
    ): Observable<EmptyResp>

    /**
     * @description 删除群中好友

     */

//    @DELETE(URLConstant.REMOVE_FRIEND_OUT_CIRCLE)
//    @HTTP(method = "DELETE",path = URLConstant.REMOVE_FRIEND_OUT_CIRCLE,hasBody = true)
    @POST(URLConstant.REMOVE_FRIEND_OUT_CIRCLE)
    fun removeFriendInCircle(
        @Body body: RequestBody
    ): Observable<EmptyResp>

    /**
     * @description 邀请好友入群

     */
    @POST(URLConstant.INVITE_FRIEND_JOIN_CIRCLE)
    fun inviteFriendsInCircle(
        @Body body: RequestBody
    ): Observable<EmptyResp>

    /**
     * @description 修改IM备注名

     */
    @GET(URLConstant.JOIN_CIRCLE)
    fun joinCircle(
        @Query("groupIdIm") groupIdIm: String
    ): Observable<EmptyResp>


    /**
     * @description 获取圈子详情

     */
    @GET(URLConstant.GET_CIRCLE_DETAIL)
    fun getCircleDetail(
        @Query("groupIdIm") groupIdIm: String
    ): Observable<BaseResp<CircleDetailRes>>

    /**
     * @description 添加好友

     */
    @POST(URLConstant.POST_JOIN_CONFIRM)
    fun setJoinConfirm(
        @Body requestBody: RequestBody
    ): Observable<EmptyResp>

    /**
     * @description 获取好友申请列表

     */
    @GET(URLConstant.FRIEND_APPLY_LIST)
    fun getFriendApplyList(
        @Query("currentUserImId") imUserId: String, @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<DataListRes<FriendApplyItem>>>


    /**
     * @description 同意好友申请以及群申请

     */
    @PUT(URLConstant.AGREE_FRIEND_APPLY)
    fun agreeFriendApply(
        @Body body: RequestBody
    ): Observable<EmptyResp>

    /**
     * @description 获取圈子标签列表

     */
    @GET(URLConstant.GET_CIRCLE_TAGS)
    fun getCircleTag(
    ): Observable<BaseResp<ArrayList<CircleTagEntity>>>

    /**
     * @description 圈子主页加关注数
     */
    @GET(URLConstant.GROUP_ADD_COUNT)
    fun groupAddCount(
        @Query("groupIdIm") groupIdIm: String
    ): Observable<EmptyResp>


    /**
     * @description 用户创建的圈子
     */
    @GET(URLConstant.USER_CREATED_GROUP)
    fun userCreatedGroup(
        @Query("userId") userId: String,
        @Query("pageSize") pageSize: Int,
        @Query("pageNum") pageNum: Int
    ): Observable<BaseResp<DataListRes<CircleDisplayItem>>>

    /**
     * @description 是否可以私信
     */
    @GET(URLConstant.PRIVATE_MESSAGE)
    fun privateMessage(
        @Query("buyUserId") buyUserId: String,
        @Query("serviceUserId") serviceUserId: String
    ): Observable<BaseResp<Boolean>>

    /**
     * @description 推荐好友

     */
    @GET(URLConstant.RECOMMEND_FRIEND)
    fun fetchRecommendFriends(
    ): Observable<BaseResp<ArrayList<RecommendFriendRes>>>

    /**
     * @description 添加好友

     */
    @POST(URLConstant.ADD_FRIEND)
    fun addFriend(
        @Body requestBody: RequestBody
    ): Observable<EmptyResp>

    /**
     * @description 修改群名称

     */
    @PUT(URLConstant.CHANGE_CIRCLE_NAME)
    fun changCircleName(@Body requestBody: RequestBody): Observable<EmptyResp>

    /**
     * @description 我的圈子

     */
    @GET(URLConstant.MY_CIRCLE)
    fun fetchMyCircle(): Observable<BaseResp<ArrayList<CircleDisplayItem>>>

    /**
     * @description 我的朋友

     */
    @GET(URLConstant.MY_FRIENDS)
    fun fetchMyFriend(
        @Query("currentUserImId") imUserId: String,
        @Query("medicineCode") medicineBoxId: String
    ): Observable<BaseResp<ArrayList<MyFriendItem>>>

    /**
     * @description 修改群简介

     */
    @PUT(URLConstant.CHANGE_CIRCLE_SUMMARY)
    fun changeCircleSummary(@Body requestBody: RequestBody): Observable<EmptyResp>

    @PUT(URLConstant.CHANGE_CIRCLE_INFO)
    fun changeCircleInfo(@Body requestBody: RequestBody): Observable<EmptyResp>

    @PUT(URLConstant.CHANGE_GROUP_TYPE)
    fun groupTypeChange(@Body requestBody: RequestBody): Observable<EmptyResp>

    @GET(URLConstant.GROUP_TYPE_CHANGE_JUDGMENT)
    fun groupTyeChangeJudgment(
        @Query("groupIdIm") groupIdIm: String?,
        @Query("type") type: Int
    ): Observable<BaseResp<Boolean?>>

    /**
     * @description 修改群个人名称

     */
    @PUT(URLConstant.CHANGE_REMARK_NAME_IN_GROUP)
    fun updateNickNameInCircle(@Body requestBody: RequestBody): Observable<EmptyResp>

    /**
     * @description 创建群
     */
    @POST(URLConstant.CREATE_CIRCLE)
    fun createCircle(@Body requestBody: RequestBody): Observable<BaseResp<CircleDetailRes>>

    /**
     * app添加药箱留言
     */
    @POST(URLConstant.ADD_MB_REMAIN_MSG)
    fun addMedicineChestRemindMsg(@Body requestJsonBody: RequestBody): Observable<EmptyResp>

    /**
     * 投诉圈子
     */
    @POST(URLConstant.COMPLAINT_GROUP)
    fun complaintGroup(@Body requestJsonBody: RequestBody): Observable<BaseResp<Any>>


    /**
     * 举报好友
     */
    @POST(URLConstant.COMPLAINT_FRIEND)
    fun complaintFriend(@Body requestJsonBody: RequestBody): Observable<EmptyResp>


    /**
     * @description 搜索用户
     */
    @GET(URLConstant.SEARCH_PLATFORM_USER)
    fun searchFriend(@Query("searchNum") param: String): Observable<BaseResp<MyFriendItem>>

    /**
     * @description 搜索附近圈子
     */
    @GET(URLConstant.SEARCH_NEARBY_CIRCLES)
    fun searchNearbyCircle(
        @Query("lat") lat: Double?, @Query("lng") lng: Double?,
        @Query("param") search_key: String
    ): Observable<BaseResp<ArrayList<CircleDisplayItem>>>

    /**
     * @description 退出圈子
     */
    @DELETE(URLConstant.LOGOUT_CIRCLE)
    fun logoutCircle(
        @Query("groupIdIm") groupIdIm: String
    ): Observable<EmptyResp>

    /**
     * @description 推荐圈子
     */
    @GET(URLConstant.RECOMMAND_CIRCLE_LIST)
    fun recommendCircles(
    ): Observable<BaseResp<ArrayList<CircleDisplayItem>>>

    /**
     * @description 检查是否被禁言
     * @return 1 正常 2 禁言
     */
    @GET(URLConstant.CHECK_IS_FORBIDDEN)
    fun checkIsForbidden(@Query("groupIdIm") groupIdIm: String): Observable<BaseResp<Int>>

    /**
     * 检测是否可以转发消息
     */
    @GET(URLConstant.CHECK_FORWARD)
    fun translateConfirm(
        @Query("currentType") currentType: String?,
        @Query("forwardType") forwardType: String?,
        @Query("groupId") groupId: String?,
        @Query("toGroupId") toGroupId: String?,
        @Query("toUserId") toUserId: String?
    ): Observable<BaseResp<Boolean?>>

    /**
     * 检测是否可以分享内容
     */
    @GET(URLConstant.CHECK_SHARE)
    fun shareConfirm(
        @Query("forwardType") forwardType: String?,
        @Query("toGroupId") toGroupId: String?,
        @Query("toUserId") toUserId: String?
    ): Observable<BaseResp<Boolean?>>

    /**
     * @description 快速用药药物展示公共接口
     * @param
     * @return
     * @author admin
     * @time 2019/10/30
     */
    @GET(URLConstant.GET_QUICK_MEDICINE_COMMON_LIST)
    fun quickMedicineCommonList(
        @Query("coding") coding: String, @Query("key") key: String?,
        @Query("medicineTypeCode") medicineTypeCode: String, @Query("type") type: String?
    ): Observable<BaseResp<AllMedicationRes>>

    /**
     * @description 判断发布内容权限
     * @param
     * @return
     * @author admin
     * @time 2019/10/30
     */
    @GET(URLConstant.AUTHORITY)
    fun contentAuthority(
    ): Observable<EmptyResp>

    /**
     * 检查版本更新
     */
    @GET(URLConstant.CHECK_UPDATE)
    fun checkUpdate(): Observable<EmptyResp>

    /**
     * 获取银行卡号所属银行
     */
    @GET(URLConstant.GET_BANK_NAME)
    fun getCardNumBelongToBank(cardNumber: String): Observable<BaseResp<String>>

    /**
     * 添加银行卡
     */
    @POST(URLConstant.ADD_BANK_CARD)
    fun addBankCard(requestJsonBody: RequestBody): Observable<EmptyResp>


    /**
     * @description 是否允许换药
     */
    @GET(URLConstant.GET_IS_ALLOW)
    fun getIsAllowChangeMedicine(@Query("chestCode") chestCode: String): Observable<BaseResp<Boolean>>

    /**
     * @description 获取药箱内的厂商药
     */
    @GET(URLConstant.GET_TYPE_LIST)
    fun getMedicineTypeList(
        @Query("chestCode") chestCode: String,
        @Query("typeCode") typeCode: String?
    ): Observable<BaseResp<MedicineChangeTypeListRes>>

    /**
     * @description 获取商品库的药品信息
     */
    @GET(URLConstant.GET_TARGET)
    fun getMedicineTarget(
        @Query("typeCode") typeCode: String?,
        @Query("size") size: String?,
        @Query("pageNum") pageNum: Int?,
        @Query("pageSize") pageSize: Int?
    ): Observable<BaseResp<MedicineTargetRes>>

    /**
     * @description 换药订单详情
     */
    @GET(URLConstant.GET_MEDICINE_CHANGE_ORDER_DETAIL)
    fun getChangeMedicineOrderDetail(@Query("replaceOrderId") replaceOrderId: String): Observable<BaseResp<ChangeMedicineOrderDetailRes>>

    /**
     * @description 换药订单列表
     */
    @GET(URLConstant.GET_CHANGE_MEDICINE_ORDERS)
    fun getChangeMedicineOrders(
        @Query("chestCode") chestCode: String,
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<ChangeMedicineOrdersRes>>

    /**
     * @description 提交换药
     */
    @POST(URLConstant.POST_CHANGE_MEDICINE)
    fun submitChangeMedicine(@Body requestJsonBody: RequestBody): Observable<EmptyResp>

    /**
     * @description 获取目标药品类型
     */
    @GET(URLConstant.GET_MEDICINE_TYPE_TARGET)
    fun getTargetMedicineType(): Observable<BaseResp<List<TargetMedicineTypeRes>>>


    /**
     * @description 退回或者更换药箱扫描二维码
     */
    @GET(URLConstant.GET_SCAN_CODE)
    fun getScanCode(
        @Query("content") content: Boolean,
        @Query("id") id: String
    ): Observable<EmptyResp>


    /**
     * @description 获取一级分类
     */
    @GET(URLConstant.GET_MARKET_FIRST_TYPE)
    fun getMarketFirstPage(@Query("type") type: Int): Observable<BaseResp<List<MarketFirstTypeRes>>>

    /**
     * @description 根据分类名称获取商品
     */
    @GET(URLConstant.GET_MARKET_GOODS)
    fun getMarketGoodsByType(
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int,
        @Query("firstTypeName") firstTypeName: String,
        @Query("type") type: Int,
        @Query("secondTypeName") secondTypeName: String?
    ): Observable<BaseResp<MarketGoodsRes>>


    /**
     * @description 获取二级分类
     */
    @GET(URLConstant.GET_MARKET_SECOND_KINDS)
    fun getMarketSecondKinds(@Query("firstTypeName") firstTypeName: String): Observable<BaseResp<List<MarketFirstTypeRes>>>

    /**
     * @description 获取商品详情
     */
    @GET(URLConstant.GET_MARKET_GOODS_DETAIL)
    fun getGoodsDetail(@Query("commodityId") commodityId: String): Observable<BaseResp<MarketGoodsDetail>>


    /**
     * @description 获取购物车数量
     */
    @GET(URLConstant.GET_BUY_CAR_COUNT)
    fun getBuyCarCount(@Query("familyRelationId") familyRelationId: String): Observable<BaseResp<Long>>

    /**
     * @description 解除药箱关系
     */
    @DELETE(URLConstant.DELETE_BUY_CAR_LIST)
    fun deleteBuyCarList(@Query("shoppingCartIds") shoppingCartIds: String): Observable<EmptyResp>


    /**
     * @description 新增购物车数据
     */
    @POST(URLConstant.ADD_BUY_CAR_DATA)
    fun addBuyCarData(@Body body: RequestBody): Observable<EmptyResp>

    /**
     * @description 查询购物车列表
     */
    @GET(URLConstant.GET_BUY_CAR_LIST)
    fun getBuyCarList(
        @Query("familyRelationId") familyRelationId: Long,
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<BuyCarListBean>>

    /**
     * @description 编辑购物车商品数量
     */
    @PUT(URLConstant.PUT_BUY_CAR)
    fun editBuyCar(@Body body: RequestBody): Observable<EmptyResp>


    /**
     * @description 搜索药品
     */
    @GET(URLConstant.GET_MARKET_SEARCH)
    fun getMarketSearch(
        @Query("salesName") salesName: String,
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<MarketGoodsRes>>

    /**
     * @description 搜索药品推荐
     */
    @GET(URLConstant.GET_MARKET_SEARCH_RECOMMEND)
    fun getMarketSearchRecommend(
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<MarketGoodsRes>>


    /**
     * @description 新增收货地址
     */
    @POST(URLConstant.POST_SAVE_NEW_ADDRESS)
    fun addNewAddress(@Body body: RequestBody): Observable<EmptyResp>

    /**
     * @description 获取默认收货地址
     */
    @GET(URLConstant.GET_DEFAULT_ADDRESS)
    fun getDefaultAddress(): Observable<BaseResp<DefaultAddressRes>>

    /**
     * @description 获取收货地址详情
     */
    @GET(URLConstant.GET_ADDRESS_DETAIL)
    fun getAddressDetail(@Query("consigneeAddressId") consigneeAddressId: String): Observable<BaseResp<AddressDetailRes>>

    /**
     * @description 收货地址列表
     */
    @GET(URLConstant.GET_ADDRESS_LIST)
    fun getAddressList(): Observable<BaseResp<List<AddressListRes>>>

    /**
     * @description 设置默认收货地址 */
    @PUT(URLConstant.PUT_DEFAULT_ADDRESS)
    fun setDefaultAddress(@Body body: RequestBody): Observable<EmptyResp>

    /**
     * @description 更新收货地址 */
    @PUT(URLConstant.PUT_UPDATE_ADDRESS)
    fun updateAddress(@Body body: RequestBody): Observable<EmptyResp>

    /**
     * 删除地址
     */
    @DELETE(URLConstant.DELETE_ADDRESS)
    fun deleteAddress(@Query("id") consigneeAddressId: Long?): Observable<EmptyResp>

    /**
     * @description 获取运费
     */
    @POST(URLConstant.POST_GET_FREIGHT)
    fun getFreight(@Body body: RequestBody): Observable<BaseResp<Float>>

    /**
     * @description 结算判断商品状态
     */
    @POST(URLConstant.POST_CHECK_STATUS)
    fun checkStatus(@Body body: RequestBody): Observable<BaseResp<List<CheckStatusRes>>>

    /**
     * @description 兑换商品
     */
    @POST(URLConstant.POST_EXCHANGE_PRODUCT)
    fun exchangeProduct(@Body body: RequestBody): Observable<EmptyResp>

    /**
     * @description 通过兑换账户获取订单列表
     */
    @GET(URLConstant.GET_ORDER_BY_ACCOUNT)
    fun getOrderByByAccount(
        @Query("exchangeAccount") exchangeAccount: String,
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<OrdersLisrRes>>

    /**
     * @description 查看商品详情
     */
    @GET(URLConstant.GET_PRODUCT_DETAIL)
    fun getPointProductDetail(
        @Query("id") id: String
    ): Observable<BaseResp<OrderDetailRes>>

    /**
     * @description 获取环保页基础信息
     */
    @GET(URLConstant.GET_POINT_MESSAGE)
    fun getPointsMessage(
        @Query("familyId") familyId: String
    ): Observable<BaseResp<PointSaveRes>>

    /**
     * @description 获取积分商品列表
     */
    @GET(URLConstant.GET_PRODUCT_LIST)
    fun getPointsProductList(
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<PointsListRes>>

    /**
     * @description 获取环保明细列表
     */
    @GET(URLConstant.GET_RECORDS)
    fun getRecords(
        @Query("familyId") familyId: String,
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<EnvironmentalProRes>>

    /**
     * @description 确认收货 */
    @PUT(URLConstant.PUT_SURE_RECEIVE)
    fun updateByOrderNum(@Body body: RequestBody): Observable<EmptyResp>


    /**
     * @description 创建订单 药箱药销售
     */
    @POST(URLConstant.POST_CREATE_ORDER)
    fun createOrder(@Body body: RequestBody): Observable<BaseResp<CreateOrderRes>>

    /**
     * @description 计算用药天数
     */
    @POST(URLConstant.POST_GET_DAYS)
    fun getDays(@Body body: RequestBody): Observable<BaseResp<GetDaysRes>>

    /**
     * @description 用药获取药箱地址 监护人name phone 运费
     */
    @GET(URLConstant.GET_MED_CHEST)
    fun medicineChestAddress(
        @Query("familyId") familyId: String,
        @Query("mallPrice") mallPrice: String
    ): Observable<BaseResp<MedCheseRes>>

    /**
     * @description 创建支付单
     */
    @POST(URLConstant.POST_PAY_ORDER)
    fun payOrder(@Body body: RequestBody): Observable<BaseResp<String>>

    /**
     * @description 监护人拒绝支付订单
     */
    @POST(URLConstant.POST_REFUSE_PAY)
    fun refusePay(@Body body: RequestBody): Observable<EmptyResp>

    /**
     * @description 查询订单项
     */
    @GET(URLConstant.GET_SSELECTE_SHOP)
    fun selectEshopItem(
        @Query("orderNum") orderNum: String
    ): Observable<BaseResp<SelectedItemRes>>

    /**
     * @description 查询用药订单详情
     */
    @GET(URLConstant.GET_SELECTE_MEDICINE)
    fun selectMedicineItem(
        @Query("orderNum") orderNum: String
    ): Observable<BaseResp<SelectedItemRes>>

    /**
     * @description 商城订单列表
     */
    @GET(URLConstant.GET_ORDER_LIST)
    fun selectEshopMedicineSell(
        @Query("createrId") createrId: String,
        @Query("endTime") endTime: String,
        @Query("familyId") familyId: String,
        @Query("orderNum") orderNum: String,
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int,
        @Query("startTime") startTime: String
    ): Observable<BaseResp<OrderLisrRes>>

    /**
     * @description 取消订单
     */
    @POST(URLConstant.POST_CANCEL_ORDER)
    fun cancelOrder(@Body body: RequestBody): Observable<EmptyResp>


    /**
     * @description 删除订单
     */
    @POST(URLConstant.POST_DELETE_ORDER)
    fun deleteOrder(@Body body: RequestBody): Observable<EmptyResp>

    /**
     * @description 确认收货
     */
    @POST(URLConstant.POST_CONFIRM_RECEIVED)
    fun confirmReceived(@Body body: RequestBody): Observable<EmptyResp>


    /**
     * @description 药品订单列表
     */
    @GET(URLConstant.GET_MEDICINE_ORDERS)
    fun getMedicineOrders(
        @Query("createrId") createrId: String,
        @Query("endTime") endTime: String,
        @Query("familyId") familyId: String,
        @Query("orderNum") orderNum: String,
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int,
        @Query("startTime") startTime: String
    ): Observable<BaseResp<MedicineListRes>>


    /**
     * @description 快速用药搜索
     */
    @GET(URLConstant.GET_MEDICINE_SEARCH)
    fun searchMedicine(
        @Query("coding") coding: String,
        @Query("salesName") salesName: String,
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<UseSearchResult>>

    /**
     * 加入医生排队
     */
    @POST(URLConstant.JOIN_QUEUE)
    fun joinQueue(@Body requestJsonBody: RequestBody): Observable<BaseResp<CallLineUpOverRes>>

    @POST(URLConstant.JOIN_TRANSFER_QUEUE)
    fun joinTransferQueue(@Body requestJsonBody: RequestBody): Observable<BaseResp<CallLineUpOverRes>>

    /**
     * 轮询获取排队结果
     */
    @GET(URLConstant.GET_QUEUE_RESULT)
    fun getQueueResult(
        @Query("type") type: Int,
        @Query("doctorTableId") doctorTableId: String?,
        @Query("departmentId") departmentId: Long?,
        @Query("doctorId") doctorId: Long?,
        @Query("userId") userId: Long?
    ): Observable<BaseResp<CallLineUpOverRes>>

    /**
     * @description 根据广告类型获取广告
     */
    @GET(URLConstant.GET_ADVERTIZIMENT_BY_TYPE)
    fun getAdByType(
        @Query("advertType") advertType: String
    ): Observable<BaseResp<AdvertizimentRes>>

    /**
     * @description 根据广告类型获取广告 新
     */
    @GET(URLConstant.GET_ADVERTIZIMENT_BY_CODE)
    fun getAdByCode(
        @Query("code") code: String
    ): Observable<BaseResp<List<AdvertiseRes>>>

    /**
     * @description 根据广告类型获取广告 2
     */
    @GET(URLConstant.GET_ADVERTIZIMENT_BY_TYPE)
    fun getAdByType2(
        @Query("advertType") advertType: String
    ): Observable<BaseResp<AdvertizimentRes2>>


    /**
     * @description 商城销售的订单列表，用于开具发票
     */
    @GET(URLConstant.GET_INVOICE_ORDERS)
    fun getInvoiceOrders(): Observable<BaseResp<List<InvoiceRes>>>

    /**
     * @description 新增发票
     */
    @POST(URLConstant.POST_INVOICE_ADD)
    fun addInvoice(@Body requestJsonBody: RequestBody): Observable<BaseResp<Boolean>>

    /**
     * @description 分页获取开票记录
     */
    @GET(URLConstant.GET_INVOICE_PAGE)
    fun getInvoicesPage(
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<InvoicePageRes>>

    /**
     * @description 根据发票id获取发票详情
     */
    @GET(URLConstant.GET_INVOICE_DETAIL)
    fun getInvoiceDetail(
        @Query("invoiceId") invoiceId: String
    ): Observable<BaseResp<InvoiceDetail>>

    /**
     * @description 售后订单详情
     */
    @GET(URLConstant.GET_SALE_DETAIL)
    fun getSaleDetail(@Query("afterSaleNum") afterSaleNum: String): Observable<BaseResp<GetSaleDetail>>

    /**
     * 填写运单号
     */
    @POST(URLConstant.POST_NUMBER)
    fun fillOrderNumber(@Body requestJsonBody: RequestBody): Observable<EmptyResp>

    /**
     * 批量获取价格
     */
    @POST(URLConstant.POST_PRICE_BY_ID)
    fun selectPricesByIds(@Body requestJsonBody: RequestBody): Observable<BaseResp<List<ChangePriceRes>>>


    /**
     * @description 售后订单详情
     */
    @GET(URLConstant.GET_INDEX_REMIND)

    fun getIndexRemind(
        @Query("familyId") familyId: String,
        @Query("remindType") remindType: String,
        @Query("userId") userId: String
    ): Observable<BaseResp<List<IndexRemindRes>>>

    /**
     * @description 获取协议
     */
    @GET(URLConstant.GET_PROTCOL)
    fun getProtcol(
        @Query("userId") userId: String
    ): Observable<BaseResp<String>>

    /**
     * 更新协议
     */
    @PUT(URLConstant.PUT_PROTCOL)
    fun updateProtcol(@Body requestJsonBody: RequestBody): Observable<EmptyResp>

    /**
     * 获取健康咨询记录
     */
    @GET(URLConstant.GET_INQUIRY_RECORD)
    fun getInquiryRecord(
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<DataListRes<HealthInquiryRecordRes>>>

    /**
     * 获取健康咨询记录,带医生信息的
     */
    @GET(URLConstant.GET_HEALTH_RECORD)
    fun getHealthOrderRecordsUsing(
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<DataListRes<HealthRecordItemRes>>>

    @GET(URLConstant.GET_INQUIRY_RECORD_DETAIL)
    fun getInquiryRecordDetail(
        @Query("doctorTableId") doctorTableId: Long
    ): Observable<BaseResp<HealthInquiryRecordRes>>

    /**
     * @description 获取app最新版本
     */

    @GET(URLConstant.GET_APP_VERSION)
    fun getAppVersion(
        @Query("channel") channel: String,
        @Query("version") version: String
    ): Observable<BaseResp<GetVersionRes>>

    /*
     * 通话连接通之前通话挂断或者未接听
     */

    @POST(URLConstant.ADD_USER_RECORD_FROM_APP)
    fun addUserRecordFromAPP(@Body requestJsonBody: RequestBody): Observable<EmptyResp>

    @GET(URLConstant.UNLOCK_TIMES)
    fun unlockTimes(
        @Query("doctorTableId") doctorTableId: String?
    ): Observable<BaseResp<Any?>>

    /**
     * @description 客服医生信息
     */
    @GET(URLConstant.GET_CUSTOMER_DOCTOR_INFO)
    fun getCustomerDoctorInfo(@Query("imuserId") imuserId: String): Observable<BaseResp<CustomerDoctorInfoRes>>

    /**
     * @description 帮助中心
     * @param
     * @return
     * @author admin
     * @time 2020/3/17
     */
    @GET(URLConstant.GET_HELP_CENTRE)
    fun getHelpCentreInfo(): Observable<BaseResp<ArrayList<HelpCentreRes>>>

    /**
     * @description 获取服务协议列表
     * @param
     * @return
     * @author admin
     * @time 2020/3/17
     */
    @GET(URLConstant.GET_SERVICE_PROTOCOL)
    fun getServiceProtocolList(): Observable<BaseResp<ArrayList<ServiceProtocolRes>>>

    /**
     * @description 获取服务协议详情
     * @param
     * @return
     * @author admin
     * @time 2020/3/17
     */
    @GET(URLConstant.GET_SERVICE_PROTOCOL_DETAIL)
    fun getServiceProtocolDetail(@Query("agreementId") agreementId: String): Observable<BaseResp<ServiceProtocolRes>>

    /**
     * @description (健康app) 3-用户注册/登录协议
     * (健康app) 4-隐私协议
     * (健康app) 9-视频咨询服务协议
     * @param
     * @return
     * @author admin
     * @time 2020/3/18
     */
    @GET(URLConstant.GET_LOGIN_AGREEMENT)
    fun getCommontProtocol(@Query("agreementId") agreementId: String): Observable<BaseResp<ServiceProtocolRes>>

    //--------------------------------------------群免打扰接口---------------------------------------------------------------------------------------


    @GET(URLConstant.ADD_MESSAGE_DISTURB)
    fun addNoDisturbCircle(@Query("groupIdIm") groupIdIm: String): Observable<BaseResp<Any>>

    @GET(URLConstant.CANCEL_MESSAGE_DISTURB)
    fun cancleMesDisturb(@Query("groupIdIm") groupIdIm: String): Observable<BaseResp<Any>>

    @GET(URLConstant.GET_ALL_DISTURB_CIRCLE_ID)
    fun getAllDisturbMsgId(): Observable<BaseResp<ArrayList<String>>>

    @GET(URLConstant.CANCEL_QUEUE)
    fun cancelQueue(@Query("doctorTableId") doctorTableId: String?): Observable<EmptyResp>

    @GET(URLConstant.CONFIRM_CREATE_CONFERENCE_SUCCESSFUL)
    fun confirmQueueSuccessful(
        @Query("doctorTableId") doctorTableId: String?,
        @Query("type") type: Int?
    ): Observable<BaseResp<Any?>>

    /*
     * 通话连接通之前通话挂断或者未接听
     */
    @POST(URLConstant.ADD_CALL_LOG)
    fun addCallLog(@Body requestJsonBody: RequestBody): Observable<EmptyResp>

    /*
     * 添加服务评价
     */
    @POST(URLConstant.ADD_EVALUATE)
    fun addEvaluate(@Body requestJsonBody: RequestBody): Observable<EmptyResp>

    /**
     * 获取服务评价
     */
    @GET(URLConstant.GET_EVALUATE)
    fun getEvaluate(@Query("doctorTableId") doctorTableId: String): Observable<BaseResp<List<SubjectRes>>>

    /*
     * 获取题目
     */
    @GET(URLConstant.GET_SUBJECTS)
    fun getSubjects(): Observable<BaseResp<List<SubjectRes>>>


    /**
     * 获取90天会员
     */
    @GET(URLConstant.VIP_DURATION)
    fun getConsultationTime(): Observable<BaseResp<VipDurationRes>>

    /*
     * 获取进行中或未开始的活动信息
     */
    @GET(URLConstant.ACTIVE_SELECT_ACTIVITY)
    fun selectActivity(): Observable<BaseResp<OfferLoveActiveRes>>

    /*
     * 获取进行中或未开始的活动信息
     */
    @GET(URLConstant.ACTIVE_TOP_EIGHT)
    fun topEight(): Observable<BaseResp<List<ActiveDoneeRes>>>

    /*
     * 下单前置校验 code 0 成功 跳转订单确认页 -1 失败 弹窗提示 701 订单待支付 data 为订单号
     */
    @GET(URLConstant.ACTIVE_CHECK_PAY)
    fun activeCheckPay(@Query("activityId") activityId: Long): Observable<BaseResp<String>>

    /*
     * 提交订单
     */
    @POST(URLConstant.ACTIVE_CREATE_ORDER)
    fun activeCreateOrder(@Body requestJsonBody: RequestBody): Observable<BaseResp<ActiveCreateOrderRes>>

    /*
     * 立即支付
     */
    @POST(URLConstant.ACTIVE_PAY_ORDER)
    fun activePayOrder(@Body requestJsonBody: RequestBody): Observable<BaseResp<String>>

    /*
     * 获取无受赠人捐赠口罩数
     */
    @GET(URLConstant.ACTIVE_GETCOUNT_WITHOUT_GIVE)
    fun getCountWithOutGive(): Observable<BaseResp<Int>>

    /**
     * 返回释放所有资源
     */
    @PUT(URLConstant.ACTIVE_RELEASE_ALL)
    fun activeReleaseAll(@Body body: RequestBody): Observable<EmptyResp>

    /*
     * 活动订单列表
     */
    @GET(URLConstant.POST_ACTIVITY_LIST)
    fun getActivityList(
        @Query("giveId") giveId: String,
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int,
        @Query("payId") payId: String
    ): Observable<BaseResp<ActivityOrdersRes>>

    /*
     * 活动订单详情
     */
    @GET(URLConstant.GET_ACTIVITY_DETAIL)
    fun getActivityDetail(@Query("orderNum") orderNum: String): Observable<BaseResp<ActivityOrderDetailRes>>

    /*
     * 确认收货
     */
    @POST(URLConstant.POST_SURE_RECEIVE)
    fun sureReceive(@Body requestJsonBody: RequestBody): Observable<EmptyResp>

    /*
     * 获取赠送订单记录
     */
    @GET(URLConstant.GET_GIVER_ORDER_LIST)
    fun getGiverOrderList(
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<GiverOrderRecoedRes>>

    /*
    * 获取物流信息
    * 物流公司ID
    * 运单号
    */
    @GET(URLConstant.GET_LOGISTICS)
    fun getLogistics(
        @Query("waybillId") waybillId: String,
        @Query("waybillNum") waybillNum: String,
        @Query("receivingPhone") receivingPhone: String
    ): Observable<BaseResp<LogisticRes3>>

    /*
    * 申请受赠
    */
    @POST(URLConstant.POST_APPLY_GIFT)
    fun applyGift(@Body requestJsonBody: RequestBody): Observable<BaseResp<Long>>

    /*
    * 获取排行数据
    */
    @GET(URLConstant.GET_RANK_DATA)
    fun getRankData(): Observable<BaseResp<RankDataRes>>

    /*
    *分享
    */
    @GET(URLConstant.GET_APPLY_SHARE)
    fun applyShare(@Query("applyId") applyId: String): Observable<EmptyResp>

    /*
    *分享
    */
    @GET(URLConstant.GET_ORDER_PAY_STATE)
    fun getOrderPayState(@Query("orderNum") orderNum: String): Observable<BaseResp<Int>>

    /*
   *获取上次领爱心信息
   */
    @GET(URLConstant.GET_LAST_GET_LOVE_INFO)
    fun getLastGetLoveInfo(): Observable<BaseResp<LastGetLoveInfoRes>>

    /**
     * 用户抽奖任务
     */
    @GET(URLConstant.LOTTERY_TASK)
    fun getLotteryTaskList(@Query("activityId") activityId: String): Observable<BaseResp<LotteryTask>>

    /**
     * 用户中奖记录
     */
    @GET(URLConstant.LOTTERY_RECORD)
    fun getLotteryRecord(
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<DataListRes<LotteryRecordRes>>>

    /**
     * 用户中奖记录发货地址
     */
    @POST(URLConstant.LOTTERY_ADDRESS_UPDATE)
    fun updateRecordConsigneeInfo(@Body requestJsonBody: RequestBody): Observable<EmptyResp>

    @POST(URLConstant.FIRST_VEDIO_COMPLETE)
    fun completeFirstVideo(): Observable<BaseResp<Any>>

    /**
     * 是否是好友
     */
    @GET(URLConstant.IS_FRIEND)
    fun isFriend(@Query("customerAccount") customerAccount: String): Observable<BaseResp<IsFriendRes>>

    /**
     * 获取最新一条拨打成功的咨询记录
     */
    @GET(URLConstant.CUSTOMER_LAST_RECORD)
    fun getLastRecord(): Observable<BaseResp<LastRecordRes>>

    /**
     * 视乎排队前进行验证
     */
    @GET(URLConstant.BEFORE_JOIN_QUEUE)
    fun verificationBeforeJoinQueue(
        @Query("familyId") familyId: Long?,
        @Query("departmentId") departmentId: Long?
    ): Observable<BaseResp<Any>>

    /**
     * 实名认证
     */
    @POST(URLConstant.AUTHEN)
    fun authen(@Body requestJsonBody: RequestBody): Observable<BaseResp<AuthenticationRes>>

    //获取实名认证信息
    @GET(URLConstant.USER_IDENAUTHEN_INFO)
    fun userIdenAuthenInfo(): Observable<BaseResp<UserIdenAuthenInfo?>>

    @GET(URLConstant.GET_CIRCLE_SET_MEAL)
    fun getSetMeal(): Observable<BaseResp<CircleSetMealRes>>

    @GET(URLConstant.IS_AUTHEN)
    fun isAuthen(): Observable<BaseResp<Boolean?>>

    /**
     * 是否封号
     */
    @GET(URLConstant.IS_FORBIDEN_VEDIO)
    fun isForbidenVideo(@Query("userId") userId: String): Observable<BaseResp<Any>>

    /**
     * 首页推荐内容以及群
     */
    @GET(URLConstant.RECOMMEND_IMGROUP_CONTENT)
    fun recommendImGroupContent(): Observable<BaseResp<MainRecommodRes>>

    @GET(URLConstant.GET_IM_GROUP_BY_TAG)
    fun getImGroupByLabel(
        @Query("tag") label: String,
        @Query("pageNum") pageNumber: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<DataListRes<CircleWithTagReq>>>

    @GET(URLConstant.GET_CONTENT_BY_TAG)
    fun getContentByLabel(
        @Query("topic") label: String,
        @Query("pageNum") pageNumber: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<DataListRes<ContentBaseEntity>>>

    /**
     * @description 删除健康记录
     * @param
     * @return
     */
    @DELETE(URLConstant.DELETE_HEALTH_RECORD)
    fun deleteHealthRecord(@Query("id") id: String): Observable<EmptyResp>

    @GET(URLConstant.GET_FIRST_LEVEL_OF_WIKI)
    fun getFirstWikiLevel(@Query("type") wikiType: Int): Observable<BaseResp<ArrayList<String?>>>

    @GET(URLConstant.GET_SECOND_LEVEL_OF_WIKI)
    fun getSecondWikiLevel(
        @Query("secondType") firstLevelName: String,
        @Query("type") wikiType: Int,
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<DataListRes<WikiSecondDataRes>>>

    @GET(URLConstant.GET_SICKNESS_DETAIL)
    fun getSicknessDetail(@Query("diseaseId") sicknessId: String): Observable<BaseResp<SicknessDetailRes>>

    @GET(URLConstant.GET_RECOMMEND_FOR_DISEASE)
    fun getRecommendForDisease(@Query("diseaseId") diseaseId: String?): Observable<BaseResp<SicknessRelatedRes>>

    @GET(URLConstant.GET_MEDICINE_DETAIL)
    fun getMedicineDetail(@Query("medicineId") medicineId: String): Observable<BaseResp<MedicineDetailRes>>

    @GET(URLConstant.GET_MEDICAL_RECOMMEND)
    fun getMedicalRecommend(
        @Query("mId") mId: String?,
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<DataListRes<GetShopRecommendRes.Data>>>

    @GET(URLConstant.GET_RESULT_BY_NAMES)
    fun getResultByNames(
        @Query("name") name: String,
        @Query("type") wikiType: Int,
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<DataListRes<WikiSecondDataRes>>>

    @GET(URLConstant.GET_NOTICE_LIST)
    fun getNoticeList(@Query("date") date: String): Observable<BaseResp<ArrayList<DailyNoticeRes>>>

    @GET(URLConstant.GET_MEDICINE_USAGE_PLAN_LIST)
    fun getPlanList(
        @Query("type") type: String,
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<DataListRes<MedicineUsagePlanRes>>>

    @POST(URLConstant.CREATE_MEDICINE_USAGE_PLAN)
    fun createMedicineUsagePlan(@Body createPlanRequestBody: RequestBody): Observable<BaseResp<String?>>

    @GET(URLConstant.GET_NOTICE_LIST_BY_PLAN_ID)
    fun getNoticeListByPlanId(@Query("planId") planId: String): Observable<BaseResp<ArrayList<MedicineUsageNoticeWithDay>>>

    @GET(URLConstant.GET_NOTICE_LIST_BY_PLAN_ID2)
    fun getNoticeListByPlanId2(@Query("planId") planId: String): Observable<BaseResp<MedicineUsageNoticeWithPlan2>>

    @GET(URLConstant.GET_NOTICE_LIST_BY_USER_ID)
    fun getNoticeListByUserId(): Observable<BaseResp<ArrayList<MedicineUsageNoticeWithPlan2>>>

    @GET(URLConstant.GET_MEDICINE_USAGE_PLAN_RECORD)
    fun getPlanRecord(@Query("planId") planId: String): Observable<BaseResp<MedicineUsageRecordRes>>

    @GET(URLConstant.GET_MEDICINE_USAGE_PLAN_DETAIL)
    fun getPlanDetail(@Query("planId") planId: String): Observable<BaseResp<MedicineUsagePlanDetailRes>>

    @DELETE(URLConstant.DELETE_MEDICINE_USAGE_PLAN)
    fun deletePlan(@Query("planId") planId: String): Observable<BaseResp<Any?>>

    @GET(URLConstant.DISCONTINUE_MEDICINE_USAGE_PLAN)
    fun discontinuePlan(
        @Query("medicationPlanId") planId: String,
        @Query("endReason") reason: String
    ): Observable<BaseResp<Any?>>

    @GET(URLConstant.GET_NOTICE_DETAIL)
    fun getNoticeDetail(
        @Query("medicationPlanId") planId: String,
        @Query("num") num: String
    ): Observable<BaseResp<MedicineUsageNoticeDetailRes>>

    @PUT(URLConstant.GET_NOTICES_DETAIL)
    fun getNotices(@Body requestBody: RequestBody): Observable<BaseResp<ArrayList<MedicineUsageNoticeDetailRes>>>

    @PUT(URLConstant.UPDATE_NOTICE)
    fun updateNoticeState(@Body requestBody: RequestBody): Observable<BaseResp<Boolean?>>

    @GET(URLConstant.GET_MEDICINE_USAGE_NOTICE_LIST)
    fun getMedicineUsageNotice(@Query("userId") userId: String): Observable<BaseResp<ArrayList<DailyNoticeRes>>>


    @POST(URLConstant.POST_INPUT_MEDICINE)
    fun inputMedicine(@Body body: RequestBody): Observable<EmptyResp>

    @DELETE(URLConstant.DELETE_MEDICINE)
    fun deleteMedicine(
        @Query("id") id: String
    ): Observable<EmptyResp>

    @GET(URLConstant.GET_FIND_BAR_BY_CODE)
    fun findBarByCode(@Query("barCode") barCode: String): Observable<BaseResp<MedicineDetailsRes>>

    @GET(URLConstant.GET_FIND_BY_NAME)
    fun findMedicineByName(
        @Query("name") name: String,
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<MedicineSearchRes>>

    @GET(URLConstant.GET_MEDICINE_DETAILS)
    fun getMedicineDetails(@Query("id") id: String): Observable<BaseResp<MedicineAllDetailRes>>

    @GET(URLConstant.GET_MEDICINES_LIST)
    fun getFamilyMedicineList(
        @Query("familyId") familyId: String,
        /*@Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int,*/
        @Query("type") type: String
    ): Observable<BaseResp<List<FamilyMedicineListRes>>>

    @GET(URLConstant.GET_MEDICINE_TYPE)
    fun getMedicineTypes(@Query("familyId") familyId: String): Observable<BaseResp<List<MedicineKindRes>>>

    @PUT(URLConstant.PUT_CANCEL_ORDER)
    fun shopCancelOrder(@Body requestBody: RequestBody): Observable<EmptyResp>

    @POST(URLConstant.POST_CONFIRM_RECEIVE)
    fun shopSureReceive(@Body body: RequestBody): Observable<EmptyResp>

    @POST(URLConstant.POST_SUBMIT_ORDER)
    fun shopSubmitOrder(@Body body: RequestBody): Observable<BaseResp<ShopCreateOrderRes>>

    @PUT(URLConstant.PUT_DELETE_ORDER)
    fun shopDeleteOrder(@Body body: RequestBody): Observable<EmptyResp>

    @POST(URLConstant.POST_PAY)
    fun shopPayOrder(@Body body: RequestBody): Observable<BaseResp<String>>

    @GET(URLConstant.GET_ORDER_DETAILS)
    fun shopGetOrderDetails(@Query("orderNum") orderNum: String): Observable<BaseResp<ShopGetOrderDetailsRes>>

    @GET(URLConstant.GET_ORDER_LISTS)
    fun shopGetOrderList(
        @Query("pageNum") pageNum: Int?,
        @Query("pageSize") pageSize: Int?,
        @Query("type") type: String?,
        @Query("status") status: String?
    ): Observable<BaseResp<DataListRes<ShopGetOrderDetailsRes>>>

    @GET(URLConstant.GET_LOGISTIC_DETAIL)
    fun shopGetLogisticInfo(
        @Query("waybillId") waybillId: String,
        @Query("waybillNum") waybillNum: String,
        @Query("receivingPhone") receivingPhone: String
    ): Observable<BaseResp<ShopLogisticsRes>>

    @POST(URLConstant.POST_REFUSE_TO_PAY)
    fun shopRefusePay(@Body body: RequestBody): Observable<EmptyResp>

    @GET(URLConstant.GET_SHOP_SEARCH)
    fun shopSearchGood(
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int,
        @Query("name") name: String
    ): Observable<BaseResp<ShopSearchRes>>

    @GET(URLConstant.GET_SHOP_GOOD_DETAILS)
    fun shopGetGoodDetails(
        @Query("commodityId") commodityId: String,
        @Query("areaId") areaId: String
    ): Observable<BaseResp<ShopGoodRes>>

    //    @HTTP(method = "DELETE", path = URLConstant.DELETE_SHOP_CAR, hasBody = true)
    @POST(URLConstant.DELETE_SHOP_CAR)
    fun shopDeleteCar(
        @Body body: RequestBody
    ): Observable<EmptyResp>

    @POST(URLConstant.POST_ADD_SHOP_CAR)
    fun shopAddShopCar(@Body body: RequestBody): Observable<EmptyResp>

    @GET(URLConstant.GET_SHOP_CAR)
    fun shopGetShopCar(
        @Query("userId") userId: String,
        @Query("areaId") areaId: String
    ): Observable<BaseResp<List<ShopGetCarsRes>>>

    @PUT(URLConstant.PUT_EDIT_SHOP_CAR)
    fun shopEditShopCar(@Body body: RequestBody): Observable<EmptyResp>

    @PUT(URLConstant.PUT_CHECK_PAY)
    fun shopCheckPay(@Body body: RequestBody): Observable<BaseResp<ShopCheckPayRes>>

    //爱心社活动列表查询
    @GET(URLConstant.GET_HUODONG_LIST)
    fun getHuoDongList(
        @Query("status") status: Int,
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<DataListRes<HuoDongRes>>>

    @GET(URLConstant.GET_SECOND_CLASS_GOODS)
    fun getShopSecondClassGoods(
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int,
        @Query("price") price: String,
        @Query("firstClassifyId") firstClassifyId: String,
        @Query("secondClassifyId") secondClassifyId: String,
        @Query("sell") sell: String
    ): Observable<BaseResp<GetShopRecommendRes>>

    @GET(URLConstant.GET_FIRST_CLASS)
    fun getShopFirstClass(): Observable<BaseResp<List<GetShopFirstClassRes>>>

    @GET(URLConstant.GET_SHOP_RECOMMEND)
    fun getShopRecommend(
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<GetShopRecommendRes>>

    @GET(URLConstant.GET_SECOND_CLASS)
    fun getShopSecondClass(
        @Query("firstClassifyId") firstClassifyId: String
    ): Observable<BaseResp<List<GetShopFirstClassRes>>>


    /**
     * @description 获取购物车数量
     */
    @GET(URLConstant.GET_BUY_CAR_COUNTS)
    fun getShopCarCount(): Observable<BaseResp<Long>>


    @POST(URLConstant.POST_BIND_BOX)
    fun bindMedicineBox(@Body body: RequestBody): Observable<EmptyResp>

    @POST(URLConstant.POST_CHANGE_STATUS)
    fun changeMedicineStatus(@Body body: RequestBody): Observable<EmptyResp>

    @POST(URLConstant.POST_ADD_FAMILY)
    fun addFamily(@Body body: RequestBody): Observable<BaseResp<Long>>

    @GET(URLConstant.GET_CHEST_INFO)
    fun getChestInfo(
        @Query("sn") sn: String
    ): Observable<BaseResp<ChestInfoRes>>

    @GET(URLConstant.GET_CHEST_INFO_FAMILY)
    fun getChestInfoByFamily(
        @Query("familyId") familyId: String
    ): Observable<BaseResp<ChestInfoRes>>

    @GET(URLConstant.GET_BIND_FAMILY)
    fun getBindFamily(): Observable<BaseResp<GetBindFamilyRes>>

    @PUT(URLConstant.PUT_CHEST_INFO)
    fun updateChestInfo(@Body body: RequestBody): Observable<EmptyResp>

    @POST(URLConstant.APPLY_FOR_LIVE_STREAMING)
    fun applyForLiveSteaming(@Body requestBody: RequestBody): Observable<BaseResp<String?>>

    @POST(URLConstant.MODIFY_LIVE_STREAM_MATERIAL)
    fun modifyLiveStreamMaterial(@Body requestBody: RequestBody): Observable<BaseResp<String?>>

    @POST(URLConstant.APPLY_FOR_EXPERT_CIRCLE_OWNER)
    fun applyForExpertCircleOwner(@Body requestBody: RequestBody): Observable<BaseResp<String?>>

    @GET(URLConstant.GET_EXPERT_QUALIFICATE_DETAIL)
    fun getExpertQualificateDetail(@Query("userId") userId: String,): Observable<BaseResp<ExpertQualificateDetailRes>>

    @POST(URLConstant.APPLY_FOR_ANCHOR)
    fun applyForAnchor(@Body requestBody: RequestBody): Observable<BaseResp<String?>>

    @GET(URLConstant.GET_ANCHOR_BY_USER_ID)
    fun getAnchorByUserId(): Observable<BaseResp<AnchorStateRes>>

    @GET(URLConstant.GET_MY_LIVE_STREAM)
    fun getMyLiveStream(): Observable<BaseResp<MyLiveStreamRes>>

    @GET(URLConstant.GET_LIVE_STREAM_HISTORY)
    fun gitLiveStreamHistory(
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<DataListRes<LiveStreamingEntity>>>

    @GET(URLConstant.GET_LIVE_STREAM_DETAIL)
    fun getLiveStreamDetail(@Query("liveId") liveId: Long?): Observable<BaseResp<LiveStreamingEntity>>

    @POST(URLConstant.CLOSE_LIVE_STREAM)
    fun closeLiveStream(@Body body: RequestBody): Observable<BaseResp<Boolean>>

    @GET(URLConstant.CHECK_BEFORE_SPECIAL_CIRCLE)
    fun checkBeforeSpecialCircle(): Observable<BaseResp<Int?>>

    @GET(URLConstant.GET_HOT_AND_PRECAST)
    fun getHotAndPrecast(): Observable<BaseResp<HotAndPrecastRes>>

    @GET(URLConstant.GET_CLASSIFY_LIVE_LIST)
    fun getClassifyList(
        @Query("type") state: Int,
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int,
        @Query("keyWord") keyWord: String?
    ): Observable<BaseResp<DataListRes<LiveStreamingEntity>>>

    @GET(URLConstant.RESERVE_LIVE_STREAM)
    fun reserveLiveStream(
        @Query("type") type: String,
        @Query("liveId") liveId: String
    ): Observable<BaseResp<Int>>

    @POST(URLConstant.CREATE_LIVE_STREAM_ORDER)
    fun createLiveStreamOrder(@Body requestBody: RequestBody): Observable<BaseResp<CreateLiveStreamOrderRes>>

    @POST(URLConstant.CREATE_CIRCLE_ORDER)
    fun createCircleOrder(@Body requestBody: RequestBody): Observable<BaseResp<CreateLiveStreamOrderRes>>

    @GET(URLConstant.LIVE_AUTHORITY)
    fun liveAuthority(@Query("liveId") liveId: Long?): Observable<BaseResp<Int>>

    @GET(URLConstant.GET_LIVE_STREAM_ORDER_DETAIL)
    fun getLiveOrderDetail(@Query("orderNum") orderNum: String?): Observable<BaseResp<CreateLiveStreamOrderReq>>

    @GET(URLConstant.GET_CIRCLE_ORDER_DETAIL)
    fun getCircleOrderDetail(@Query("orderNum") orderNum: String?): Observable<BaseResp<CreateCircleOrderReq>>

    @GET(URLConstant.GET_LIVE_STREAM_ORDER_LIST)
    fun getLiveOrderList(
        @Query("pageSize") pageSize: Int,
        @Query("pageNum") pageNum: Int
    ): Observable<BaseResp<DataListRes<CreateLiveStreamOrderReq>>>

    @GET(URLConstant.GET_CIRCLE_ORDER_LIST)
    fun getCircleOrderList(
        @Query("pageSize") pageSize: Int,
        @Query("pageNum") pageNum: Int
    ): Observable<BaseResp<DataListRes<CreateCircleOrderReq>>>


    @GET(URLConstant.GET_MEDICAL_LIST)
    fun getMedicalList(
        @Query("pageSize") pageSize: Int,
        @Query("pageNum") pageNum: Int,
        @Query("cityId") cityId: String,
        @Query("oneDepartment") oneDepartment: String,
        @Query("department") department: String,
        @Query("orderRule") orderRule: String//排序规则 1-价格升序 2-价格降序 3-接诊量升序 4-接诊量降序
    ): Observable<BaseResp<ExpertListRes>>

    @GET(URLConstant.GET_MEDICAL_DEPARTMENT)
    fun getMedicalDepartment(): Observable<BaseResp<List<ExpertDepartmentRes>>>

    @GET(URLConstant.GET_MEDICAL_DETAIL)
    fun getMedicalDetail(@Query("medicalCommodityId") medicalCommodityId: String): Observable<BaseResp<ExpertDetailRes>>

    @GET(URLConstant.GET_RECOMMEND_LIST)
    fun getRecommendList(): Observable<BaseResp<List<ExpertRecommendRes>>>


    @POST(URLConstant.GET_EXPERT_ORDER_CANCEL)
    fun cancelExpertOrder(@Body requestBody: RequestBody): Observable<EmptyResp>


    @POST(URLConstant.POST_EXPERT_REFUSE_PAY)
    fun expertRefusePay(@Body requestBody: RequestBody): Observable<EmptyResp>

    @GET(URLConstant.GET_EXPERT_ORDER_CHECK)
    fun postCheckOrder(
        @Query("type") type: Int,
        @Query("doctorId") doctorId: String,
        @Query("medicalCommodityId") medicalCommodityId: String
    ): Observable<BaseResp<String>>

    @POST(URLConstant.POST_EXPERT_CREATE_ORDER)
    fun createExpertOrder(@Body requestBody: RequestBody): Observable<BaseResp<ExpertOrderRes>>

    @POST(URLConstant.PUT_EXPERT_DELETE_ORDER)
    fun deleteExpertOrder(@Body body: RequestBody): Observable<EmptyResp>

    @POST(URLConstant.POST_EXPERT_DO_PAY)
    fun expertDoPay(@Body requestBody: RequestBody): Observable<BaseResp<String>>

    @POST(URLConstant.POST_EXPERT_EVALUTION)
    fun expertOrderEvalution(@Body requestBody: RequestBody): Observable<EmptyResp>

    @GET(URLConstant.GET_EXPERT_PATIENT_LIST)
    fun getExpertPatientList(@Query("familyId") familyId: String): Observable<BaseResp<List<ExpertFamilyPatientRes>>>

    @GET(URLConstant.GET_EVALUTION_LIST)
    fun getEvalutionList(
        @Query("doctorId") doctorId: String,
        @Query("pageNum") pageNum: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<GetEvalutionsRes>>


    @POST(URLConstant.POST_FINISH_ORDER)
    fun expertFinishOrder(@Body requestBody: RequestBody): Observable<EmptyResp>

    @GET(URLConstant.CALLBACK_CONFIRM)
    fun callbackConfirm(
        @Query("doctorTableId") doctorTableId: String?,
        @Query("uniqueMark") uniqueMark: String?
    ): Observable<BaseResp<Boolean?>>

    @GET(URLConstant.GET_EXPERT_LASTEST_ORDER)
    fun getExpertLatestOrder(
        @Query("doctorId") doctorId: String,
        @Query("patientId") patientId: String
    ): Observable<BaseResp<ExpertOrderDetailRes>>


    @GET(URLConstant.GET_EXPERT_ORDER_DETAIL)
    fun getExpertOrderDetail(@Query("orderNum") orderNum: String): Observable<BaseResp<ExpertOrderDetailRes>>

    @GET(URLConstant.GET_EXPERT_ORDER_LIST)
    fun getExpertOrderList(
        @Query("pageNum") orderNum: Int,
        @Query("pageSize") pageSize: Int,
        @Query("status") status: String
    ): Observable<BaseResp<ExpertOrderListRes>>

    @POST(URLConstant.POST_EXPERT_SAVE_PATIENT)
    fun expertSavePatient(@Body requestBody: RequestBody): Observable<BaseResp<ExpertFamilyPatientRes>>

    @DELETE(URLConstant.DELETE_LIVE_STREAM_ORDER)
    fun deleteLiveOrder(@Query("orderNum") orderNum: String?): Observable<BaseResp<String?>>

    @DELETE(URLConstant.DELETE_CIRCLE_ORDER)
    fun deleteCircleOrder(@Query("orderNum") orderNum: String?): Observable<BaseResp<Boolean?>>

    @PUT(URLConstant.OPEN_LIVE_STREAM)
    fun openLiveStream(@Body body: RequestBody): Observable<BaseResp<ChatRoomRes>>

    @GET(URLConstant.GET_PUBLISH_STREAM_URL)
    fun getPublishStreamUrl(@Query("streamKey") liveRoomId: String?): Observable<BaseResp<StreamUrlRes>>

    @GET(URLConstant.GET_PLAY_STREAM_URL)
    fun getPlayStreamUrl(@Query("streamKey") liveRoomId: String?): Observable<BaseResp<StreamUrlRes>>

    @GET(URLConstant.GET_LIVE_ROOM_DETAIL)
    fun getLiveRoomDetail(@Query("liveRoomId") liveRoomId: String?): Observable<BaseResp<ChatRoomRes>>

    @GET(URLConstant.LIVE_EXCEPTION)
    fun liveException(): Observable<BaseResp<LiveStreamingEntity>>

    @GET(URLConstant.GET_LIVE_STREAM_DETAIL2)
    fun getLiveStreamDetail2(@Query("liveId") liveId: Long?): Observable<BaseResp<LiveStreamingEntity>>

    @GET(URLConstant.LIVE_PERMISSIONS)
    fun livePermissions(): Observable<BaseResp<Boolean?>>


    @GET(URLConstant.VIDEO_GET_CARD_INFO)
    fun getCardInfo(@Query("serialNumber") serialNumber: String): Observable<BaseResp<VideoCardInfoRes>>

    @GET(URLConstant.VIDEO_GET_ORDER_STATUS)
    fun getOrderStatus(@Query("orderNum") orderNum: String): Observable<BaseResp<String>>

    @GET(URLConstant.VIDEO_GET_RECHARGE_GOODS)
    fun getRechargeGoods(): Observable<BaseResp<List<RechargrGoodRes>>>

    /**
     *
     * 类型(1-卡充值;2-购买)
     */
    @GET(URLConstant.VIDEO_GET_RECHARGE_HISTORY)
    fun getRechargeHistory(
        @Query("pageNum") serialNumber: Int,
        @Query("pageSize") pageSize: Int
    ): Observable<BaseResp<RechargeHisRes>>

    @POST(URLConstant.VIDEO_CARD_CHARGE)
    fun rechargeCard(@Body requestBody: RequestBody): Observable<BaseResp<Int>>

    @POST(URLConstant.VIDEO_POST_CREATE_ORDER)
    fun videoRechargeCreateOrder(@Body requestBody: RequestBody): Observable<BaseResp<VideoRechargeRes?>>


    @GET(URLConstant.VIDEO_CARD_TIMES)
    fun getCardTimes(): Observable<BaseResp<Int>>

    @GET(URLConstant.GET_CALL_USAGE_RECORD_LIST)
    fun getCallUsageRecordList(
        @Query("userId") id: Long?,
        @Query("pageNum") pageNum: Int?,
        @Query("pageSize") pageSize: Int?
    ): Observable<BaseResp<DataListRes<CallUsageRecordRes>>>

    @GET(URLConstant.GET_FIND_BY_MEDICALID)
    fun findByMedicalId(@Query("medicalId") medicalId: String): Observable<BaseResp<String>>

    @POST(URLConstant.SEND_VISUAL_CALL_TIMES)
    fun sendVisualCallTimes(@Body body: RequestBody): Observable<BaseResp<Boolean?>>

    @GET(URLConstant.GET_DEPARTMENTS_AND_INQUIRY_TIMES)
    fun getDepartments(@Query("familyId") familyId: Long?): Observable<BaseResp<DepartmentsRes>>


    @GET(URLConstant.GET_DOOR_CARE_MEDICAL_LIST)
    fun getDoorCareMedicalList(
        @Query("cityId") cityId: String?,
        @Query("latitude") latitude: String?,
        @Query("longitude") longitude: String?,
        @Query("orderRule") orderRule: String?,//排序规则 1-价格升序 2-价格降序 3-接诊量升序 4-接诊量降序 5-位置
        @Query("pageNum") pageNum: Int?,
        @Query("pageSize") pageSize: Int?,
        @Query("projectId") projectId: String?
    ): Observable<BaseResp<DataListRes<DoorCareRemandListRes>>>

    @GET(URLConstant.GET_DOOR_CARE_MEDICAL_DETAIL)
    fun getDoorCareMedicalDetail(@Query("medicalCommodityId") medicalCommodityId: String?): Observable<BaseResp<GetDoorCarDetailRes>>

    @GET(URLConstant.GET_DOOR_CARE_PROJECTS)
    fun getDoorCareProjects(): Observable<BaseResp<List<GetDoorCareProjectsRes>>>

    @GET(URLConstant.GET_DOOR_CARE_MEDICALS)
    fun getDoorCareRemandMedicals(
        @Query("latitude") latitude: String?,
        @Query("longitude") longitude: String?
    ): Observable<BaseResp<List<DoorCareRemandListRes>>>

    @GET(URLConstant.GET_DOOR_CARE_TWO_LIST)
    fun getDoorCareTwoList(): Observable<BaseResp<List<DoorCareTwoProjectRes>>>

    @POST(URLConstant.POST_DOOR_CARE_CANCEL_ORDER)
    fun doorCareCancelOrder(@Body body: RequestBody): Observable<EmptyResp>

    @POST(URLConstant.POST_DOOR_CARE_REFUSE_PAY)
    fun doorCareRefuse(@Body body: RequestBody): Observable<EmptyResp>

    @GET(URLConstant.GET_DOOR_CARE_MEDICAL_DETAIL_CHECK)
    fun getDoorCareMedicalDetailCheck(
        @Query("doctorId") doctorId: String?,
        @Query("projectId") projectId: String?
    ): Observable<BaseResp<GetDoorCareCheckRes>>

    @GET(URLConstant.GET_DOOR_CARE_CHIOCE_TIME)
    fun getDoorCareChoiceTime(
        @Query("date") date: String?,
        @Query("medicalId") medicalId: String?,
        @Query("projectId") projectId: String?
    ): Observable<BaseResp<List<GetDoorCareTimeRes>>>

    @GET(URLConstant.GET_DOOR_CARE_CHECK_TIME)
    fun getDoorCareCheckTime(
        @Query("appointmentTime") appointmentTime: String?,
        @Query("doctorId") doctorId: String?,
        @Query("projectId") projectId: String?
    ): Observable<BaseResp<Boolean>>

    @POST(URLConstant.POST_DOOR_CARE_CREATE_ORDER)
    fun doorCareCreateOrder(@Body body: RequestBody): Observable<BaseResp<DoorCareCreateOrderRes>>

    @POST(URLConstant.POST_DOOR_CARE_DELETE_ORDER)
    fun doorCareDeleteOrder(@Body body: RequestBody): Observable<EmptyResp>

    @POST(URLConstant.POST_DOOR_CARE_PAY)
    fun doorCarePay(@Body body: RequestBody): Observable<BaseResp<String>>

    @POST(URLConstant.POST_DOOR_CARE_EVALUTION)
    fun doorCareEvalution(@Body body: RequestBody): Observable<EmptyResp>

    @GET(URLConstant.GET_DOOR_CARE_EVALUTIONS)
    fun doorCareGetEvalutionList(
        @Query("doctorId") doctorId: String?,
        @Query("pageNum") pageNum: Int?,
        @Query("pageSize") pageSize: Int?
    ): Observable<BaseResp<DoorCareEvalutionsRes>>

    @GET(URLConstant.GET_DOOR_CARE_DOCTOR_PHONE)
    fun doorCareGetDoctorPhone(@Query("doctorId") doctorId: String?): Observable<BaseResp<String>>

    @GET(URLConstant.GET_DOOR_CARE_MEDICAL_GOOD)
    fun doorCareGetMedicalGood(@Query("medicalId") medicalId: String?): Observable<BaseResp<String>>

    @GET(URLConstant.GET_DOOR_CARE_ORDER_DETAIL)
    fun doorCareGetOrderDetail(@Query("orderNum") orderNum: String?): Observable<BaseResp<DoorCareOrderListRes.Data>>

    @GET(URLConstant.GET_DOOR_CARE_ORDERS)
    fun doorCareGetOrders(
        @Query("pageNum") pageNum: Int?,
        @Query("pageSize") pageSize: Int?,
        @Query("status") status: String
    ): Observable<BaseResp<DoorCareOrderListRes>>

    @POST(URLConstant.UPLOAD_CASE_HISTORY)
    fun uploadCaseHistory(@Body body: RequestBody): Observable<BaseResp<Long?>>

    @GET(URLConstant.GET_CASE_HISTORY_LIST)
    fun getCaseHistoryList(
        @Query("familyId") familyId: Long?,
        @Query("pageNum") pageNum: Int?,
        @Query("pageSize") pageSize: Int?
    ): Observable<BaseResp<DataListRes<AddCaseHistoryReq>>>

    @DELETE(URLConstant.DELETE_CASE_HISTORY)
    fun deleteCaseHistory(
        @Query("medicalRecordId") medicalRecordId: Long?
    ): Observable<EmptyResp>

    @GET(URLConstant.CHECK_MEDICINE_BIND_STATUS)
    fun checkMedicineBindStatus(@Query("sn") sn: String): Observable<BaseResp<Boolean>>

    @GET(URLConstant.SCAN_CODE_LOGIN_CHEST)
    fun scanCodeLoginChest(
        @Query("sn") sn: String,
        @Query("ts") ts: String
    ): Observable<BaseResp<Any>>

    @GET(URLConstant.GET_CHEST_BASE_INFO)
    fun getChestBaseInfo(
        @Query("sn") sn: String,
        @Query("ts") ts: String
    ): Observable<BaseResp<ChestBaseInfoRes>>

    @POST(URLConstant.CALL_PRE_JUDGMENT)
    fun callPreJudgment(@Body body: RequestBody): Observable<BaseResp<CallPreJudgmentRes>>

    @GET(URLConstant.CANCEL_WITH_MQTT)
    fun cancelWithMQTT(
        @Query("sn") sn: String?,
        @Query("meetingId") meetingId: String?,
        @Query("myUserImId") myUserImId: String?,
        @Query("toUserImId") toUserImId: String?
    ): Observable<EmptyResp>

    @POST(URLConstant.APPLY_FOR_DONATE)
    fun applyForDonate(@Body requestBody: RequestBody): Observable<EmptyResp>

    @GET(URLConstant.GET_USER_BY_TEL)
    fun getUserByTel(
        @Query("phone") phone: String
    ): Observable<BaseResp<FamilyGetUserByTelRes>>

    @GET(URLConstant.GET_FAMILY_GUARDIAN)
    fun getFamilyGuardian(
        @Query("familyId") familyId: String
    ): Observable<BaseResp<String>>


    @GET(URLConstant.POST_SEND_INFO)
    fun familySendInviteInfo(
        @Query("familyId") familyId: String,
        @Query("role") role: String,
        @Query("userId") userId: String
    ): Observable<EmptyResp>

    @GET(URLConstant.POST_SEND_SMS)
    fun familySendSms(@Query("phone") phone: String): Observable<EmptyResp>


    @GET(URLConstant.GET_IS_EXIST)
    fun getIsExist(
        @Query("familyId") familyId: String,
        @Query("phone") phone: String
    ): Observable<BaseResp<Boolean>>

    @GET(URLConstant.RED_POINT)
    fun getRedPoint(): Observable<BaseResp<RedPoint>>

    @GET(URLConstant.DELETE_RED_POINT)
    fun deleteRedPoint(@Query("key") key: String): Observable<EmptyResp>


    @GET(URLConstant.USER_OCR_INFO)
    fun getUserOcrInfo(): Observable<BaseResp<UserIdenAuthenInfo?>>


    @POST(URLConstant.USER_OCR_AUTH)
    fun auth(@Body requestBody: RequestBody): Observable<BaseResp<UserIdenAuthenInfo?>>

    @POST(URLConstant.USER_OCR_AUTH_UPDATE)
    fun updateAuth(@Body requestBody: RequestBody): Observable<EmptyResp>
}